home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / bluetooth / bluetooth.h next >
C/C++ Source or Header  |  2006-04-12  |  4KB  |  145 lines

  1. /*
  2.  *
  3.  *  BlueZ - Bluetooth protocol stack for Linux
  4.  *
  5.  *  Copyright (C) 2000-2001  Qualcomm Incorporated
  6.  *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
  7.  *  Copyright (C) 2002-2005  Marcel Holtmann <marcel@holtmann.org>
  8.  *
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  23.  *
  24.  */
  25.  
  26. #ifndef __BLUETOOTH_H
  27. #define __BLUETOOTH_H
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. #include <stdio.h>
  34. #include <stdint.h>
  35. #include <string.h>
  36. #include <endian.h>
  37. #include <byteswap.h>
  38.  
  39. #ifndef AF_BLUETOOTH
  40. #define AF_BLUETOOTH    31
  41. #define PF_BLUETOOTH    AF_BLUETOOTH
  42. #endif
  43.  
  44. #define BTPROTO_L2CAP    0
  45. #define BTPROTO_HCI    1
  46. #define BTPROTO_SCO    2
  47. #define BTPROTO_RFCOMM    3
  48. #define BTPROTO_BNEP    4
  49. #define BTPROTO_CMTP    5
  50. #define BTPROTO_HIDP    6
  51. #define BTPROTO_AVDTP    7
  52.  
  53. #define SOL_HCI        0
  54. #define SOL_L2CAP    6
  55. #define SOL_SCO        17
  56. #define SOL_RFCOMM    18
  57.  
  58. /* Connection and socket states */
  59. enum {
  60.     BT_CONNECTED = 1, /* Equal to TCP_ESTABLISHED to make net code happy */
  61.     BT_OPEN,
  62.     BT_BOUND,
  63.     BT_LISTEN,
  64.     BT_CONNECT,
  65.     BT_CONNECT2,
  66.     BT_CONFIG,
  67.     BT_DISCONN,
  68.     BT_CLOSED
  69. };
  70.  
  71. /* Byte order conversions */
  72. #if __BYTE_ORDER == __LITTLE_ENDIAN
  73. #define htobs(d)  (d)
  74. #define htobl(d)  (d)
  75. #define btohs(d)  (d)
  76. #define btohl(d)  (d)
  77. #elif __BYTE_ORDER == __BIG_ENDIAN
  78. #define htobs(d)  bswap_16(d)
  79. #define htobl(d)  bswap_32(d)
  80. #define btohs(d)  bswap_16(d)
  81. #define btohl(d)  bswap_32(d)
  82. #else
  83. #error "Unknown byte order"
  84. #endif
  85.  
  86. /* Bluetooth unaligned access */
  87. #define bt_get_unaligned(ptr)            \
  88. ({                        \
  89.     struct __attribute__((packed)) {    \
  90.         typeof(*(ptr)) __v;        \
  91.     } *__p = (void *) (ptr);        \
  92.     __p->__v;                \
  93. })
  94.  
  95. #define bt_put_unaligned(val, ptr)        \
  96. do {                        \
  97.     struct __attribute__((packed)) {    \
  98.         typeof(*(ptr)) __v;        \
  99.     } *__p = (void *) (ptr);        \
  100.     __p->__v = (val);            \
  101. } while(0)
  102.  
  103. /* BD Address */
  104. typedef struct {
  105.     uint8_t b[6];
  106. } __attribute__((packed)) bdaddr_t;
  107.  
  108. #define BDADDR_ANY   (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
  109. #define BDADDR_ALL   (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})
  110. #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
  111.  
  112. /* Copy, swap, convert BD Address */
  113. static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2)
  114. {
  115.     return memcmp(ba1, ba2, sizeof(bdaddr_t));
  116. }
  117. static inline void bacpy(bdaddr_t *dst, const bdaddr_t *src)
  118. {
  119.     memcpy(dst, src, sizeof(bdaddr_t));
  120. }
  121.  
  122. void baswap(bdaddr_t *dst, const bdaddr_t *src);
  123. bdaddr_t *strtoba(const char *str);
  124. char *batostr(const bdaddr_t *ba);
  125. int ba2str(const bdaddr_t *ba, char *str);
  126. int str2ba(const char *str, bdaddr_t *ba);
  127. int ba2oui(const bdaddr_t *ba, char *oui);
  128.  
  129. int baprintf(const char *format, ...);
  130. int bafprintf(FILE *stream, const char *format, ...);
  131. int basprintf(char *str, const char *format, ...);
  132. int basnprintf(char *str, size_t size, const char *format, ...);
  133.  
  134. void *bt_malloc(size_t size);
  135. void bt_free(void *ptr);
  136.  
  137. int bt_error(uint16_t code);
  138. char *bt_compidtostr(int id);
  139.  
  140. #ifdef __cplusplus
  141. }
  142. #endif
  143.  
  144. #endif /* __BLUETOOTH_H */
  145.